package cz.vse.adventura.po1715.xburj54_bursa.hra;

import cz.vse.adventura.po1715.xburj54_bursa.hra.APříkaz;
import cz.vse.adventura.po1715.xburj54_bursa.hra.HraLupič;

/*******************************************************************************
 * Instance třídy {@code PříkazOdsuň} představuje jednoúčelový příkaz
 * k odsunutí rohožky. Příkaz má parametr, který určuje, co má hráč odsunout.
 *
 * @author Jan Bursa
 * @version 1.02,  16.12.2010
 */
public class PříkazOdsuň extends APříkaz
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================

    /** Příznak toho, že uživatel odsunul rohožku. */
    static boolean ROHOZKA_ODSUNUTA = false;

//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     * Vytvoří instanci mající na strosti reakci na příkaz <b>odsuň</b>,
     * po jehož zadaní hráč odsune předmět, jehož název bude uveden za příkazem.
     * V daném případě se jedná pouze o rohožku.
     */
    public PříkazOdsuň()
    {
        super( "Odsuň",
               "Jednoúčelový příkaz sloužící k odsunutí rohožky. Je však nutné nacházet se v místnosti s rohožkou" );
    }


//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================

    /***************************************************************************
     * Odsune zadaný předmět; před tím však zkontroluje,
     * že byl zadán předmět, který má být odsunut, že tento předmět je v místnosti
     * a že tímto předmětem je rohožka.
     *
     * @param parametry jediným povoleným parametrem je Rohožka
     * @return Text zpravy vypsane po provedeni prikazu
     */
    @Override
    public String execute( String... parametry )
    {
        if (parametry.length == 0) {
            return "Není zadán předmět, který se má odsunout.";  //==========>
        }
        String predmet = parametry[0];
        HraLupič  hra = HraLupič.getHra() ;
        if (! predmet.equalsIgnoreCase("Rohožka")) {
             return "Předmět " + predmet + " není možno odsunout.";//==========>
        }
        if ((!parametry[0].equalsIgnoreCase("Rohožka"))  ||
            Místnost.getAktuálníMístnost() != Místnost.Vchod )
        {
            return "V této místnosti žádná Rohožka není";
        }
        if (ROHOZKA_ODSUNUTA) {
            return "Rohožka je již odsunuta";
        }
        ROHOZKA_ODSUNUTA = true;
            Místnost am = Místnost.getAktuálníMístnost();
            am.poloz(Předmět.KLÍČ);  //přidat do předmětů klíč
        return "Odsunul(a) jste předmět: " + predmet +
               "\n Pod rohožkou byl schovaný klíč";                     //==========>
    }

//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== VNOŘENÉ A VNITŘNÍ TŘÍDY ===================================================
//== TESTY A METODA MAIN =======================================================
//
//    /***************************************************************************
//     * Testovací metoda.
//     */
//    public static void test()
//    {
//        PříkazOdsuň x = new PříkazOdsuň();
//    }
//    /** @param args Parametry příkazového řádku - nepoužívané. */
//    public static void main( String[] args )  {  test();  }
}
